﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Modulo.Seguridad.Base
{
    public partial class WFModuloxOpcion : TDV.Controles.Base.WinForm.BaseForm_Tipo01
    {
        public WFModuloxOpcion()
        {
            InitializeComponent();
        }
        private bool help = false;
        private bool Guardo = false;
        private bool Modificar = false;
        //private LBOpcion ops = new LBOpcion();
        LBOpcion opc = new LBOpcion();
        private void WFModuloxOpcion_Load(object sender, EventArgs e)
        {
            CboTipoMenu.SelectedIndex = 0;

            TsbModificar.Enabled = false;
            CargarModulo();
            Cargar();
        }

        private void TsbSalir_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
        }

        private void TsbEliminar_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Desea realmente eliminar el registro?", "Información", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
            {
                try
                {
                    EBOpcion opcion = new EBOpcion();
                    opcion.CodigoOpcion = GrdOpciones.CurrentRow.Cells["cCodigo"].Value.ToString();
                    opcion.Eliminar();
                    Cargar();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
        protected void Cargar()
        {
            GrdOpciones.DataSource = null;
            string codmod = "";
            if (CboModulo.Items.Count > 0)
            {
                codmod = CboModulo.SelectedValue.ToString();
            }
            opc.Filtros.CodigoModulo = codmod;
            opc.Buscar();
            if (opc.Count > 0)
            {
                TsbModificar.Enabled = true;
                bindingSource1.DataSource = opc;
                GrdOpciones.DataSource = bindingSource1;
                bindingSource1.RaiseListChangedEvents = true;
                bindingSource1.ResetBindings(false);
                BarraMensaje.Text = "Se encontraron (" + opc.Count + ") registros";
            }
        }
        protected void CargarModulo()
        {
            LBModulo mod = new LBModulo();
            mod.Buscar();
            if (mod.Count > 0)
            {
                CboModulo.ValueMember = "Codigo";
                CboModulo.DisplayMember = "Descripcion";
                CboModulo.DataSource = mod;
            }
        }

        private void TsbGuardar_Click(object sender, EventArgs e)
        {

            ControlError.SetError(TxtDescripcion, "");
            if (string.IsNullOrEmpty(TxtDescripcion.Text))
            {
                ControlError.SetError(TxtDescripcion, "Ingrese una descripción");
                return;
            }

            //Inciniando Grabar
            try
            {
                //Ubicarse en el ultimo registro Orden
                EBOpcion Op = new EBOpcion();

                if (Modificar == true)
                {
                    Op.Orden = GrdOpciones.CurrentRow.Cells["cOrden"].Value.ToString();
                }
                else
                {
                    Op.Orden = Op.ObtenerCorrelativoOrden();
                }
                Op.CodigoOpcion = TxtCodigo.Text;
                Op.CodigoModulo = CboModulo.SelectedValue.ToString();
                Op.Opcion = TxtDescripcion.Text;

                //if (RdEscritura.Checked)
                //{
                    Op.Acceso = "1";
                //}
                //else
                //{ Op.Acceso = "0"; }

                Op.FlagLinea = ChkLinea.Checked ? "1" : "0";
                if (Modificar == true)
                {
                    Op.Comando = TxtComando.Text;
                }
                else
                {
                    if (ChkComando.Checked)
                    {
                        if (!string.IsNullOrEmpty(TxtComando.Text))
                        {
                            if (TxtComando.Text == "CLOSE()")
                            {
                                Op.Comando = "CLOSE()" + @";C:\TDV\net\SCHD.dll";
                            }
                            else
                            {
                                Op.Comando = "SCHD." + TxtComando.Text + @";C:\TDV\net\SCHD.dll";
                                ChkComando.Checked = false;
                                TxtComando.Enabled = false;
                            }
                        }
                       
                    }
                }
                Op.FlagPadpopup = CboTipoMenu.SelectedIndex.ToString();
                Op.Grabar();
                Guardo = true;
                Cargar();
                Nuevo();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }   
        }
        protected void Nuevo()
        {
            Modificar = false;
            TxtCodigo.Text = "";
            TxtComando.Text = "";
            TxtDescripcion.Text = "";
            ChkLinea.Checked = false;
            Guardo = false;
        }

        private void BtnModulo_Click(object sender, EventArgs e)
        {
            WFAModulos mod = new WFAModulos();
            mod.ShowDialog();
            if (mod.DialogResult == DialogResult.OK)
            {
                CargarModulo();
            }
        }

        private void TsbModificar_Click(object sender, EventArgs e)
        {
            Modificar = true;
            //Cargar la Grilla hacia los controles 
            TxtCodigo.Text = GrdOpciones.CurrentRow.Cells["cCodigo"].Value.ToString();
            TxtDescripcion.Text = GrdOpciones.CurrentRow.Cells["cOpcion"].Value.ToString();
            CboTipoMenu.SelectedIndex = Convert.ToInt32(GrdOpciones.CurrentRow.Cells["cFlagPadpopup"].Value.ToString());
            TxtComando.Text = GrdOpciones.CurrentRow.Cells["cComando"].Value.ToString();
            if (GrdOpciones.CurrentRow.Cells["cFlagLinea"].Value.ToString() == "0")
            {
                ChkLinea.Checked = false;
            }
            else
            {
                ChkLinea.Checked = true;
            }
            CboModulo.SelectedValue = GrdOpciones.CurrentRow.Cells["cCodMod"].Value.ToString();

            TsbGuardar.Enabled = true;
        }

        private void BtnDown_Click(object sender, EventArgs e)
        {
            int position = bindingSource1.Position;
            if (position == bindingSource1.Count - 1) return;  // already at bottom

            bindingSource1.RaiseListChangedEvents = false;

            EBOpcion current = (EBOpcion)bindingSource1.Current;
            bindingSource1.Remove(current);

            position++;

            bindingSource1.Insert(position, current);
            bindingSource1.Position = position;

            bindingSource1.RaiseListChangedEvents = true;
            bindingSource1.ResetBindings(false);
            foreach (DataGridViewRow Row in GrdOpciones.Rows)
            {
                EBOpcion op = new EBOpcion();
                op.Orden = Row.Index.ToString();
                op.CodigoOpcion = Row.Cells["cCodigo"].Value.ToString();
                op.GrabarOrden();
            }
        }

        private void BtnUp_Click(object sender, EventArgs e)
        {
            int position = bindingSource1.Position;
            if (position == 0) return;  // already at top

            bindingSource1.RaiseListChangedEvents = false;

            EBOpcion current = (EBOpcion)bindingSource1.Current;
            bindingSource1.Remove(current);

            position--;

            bindingSource1.Insert(position, current);
            bindingSource1.Position = position;

            bindingSource1.RaiseListChangedEvents = true;
            bindingSource1.ResetBindings(false);
            //Guardar la posición
            foreach (DataGridViewRow Row in GrdOpciones.Rows)
            {
                EBOpcion op = new EBOpcion();
                op.Orden = Row.Index.ToString();
                op.CodigoOpcion = Row.Cells["cCodigo"].Value.ToString();
                op.GrabarOrden();
            }
        }

        private void CboTipoMenu_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (CboTipoMenu.SelectedIndex == 0)
            {
                TxtComando.Text = "";
                TxtComando.Enabled = false;
            }
        }

        private void CboModulo_SelectedIndexChanged(object sender, EventArgs e)
        {
            Cargar();
        }

        private void GrdOpciones_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            try
            {
                for (int count = 0; count < GrdOpciones.Rows.Count; count++)
                {
                    if (GrdOpciones.Rows[count].Cells["cFlagpadpopup"].Value.ToString() == "0")
                    {
                        GrdOpciones.Rows[count].DefaultCellStyle.BackColor = System.Drawing.Color.Lavender;
                    }
                    if (GrdOpciones.Rows[count].Cells["cFlagpadpopup"].Value.ToString() == "1")
                    {
                        GrdOpciones.Rows[count].DefaultCellStyle.BackColor = System.Drawing.Color.White;
                    }
                    if (GrdOpciones.Rows[count].Cells["cFlagpadpopup"].Value.ToString() == "2")
                    {
                        GrdOpciones.Rows[count].DefaultCellStyle.BackColor = System.Drawing.Color.LightBlue;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void ChkComando_CheckedChanged(object sender, EventArgs e)
        {
            if (ChkComando.Checked)
            {
                TxtComando.Enabled = true;
            }
            else
            {
                TxtComando.Enabled = false;
            }
        }
    }
}
